package org.example.dao;

import org.apache.ibatis.annotations.*;
import org.example.domain.Role;

import java.util.List;

/**
 * @author Jimmy
 * @version 1.0
 */
public interface RoleDao {

    /**
     * 分页查询（不含条件）
     * @return list
     */
    @Select("select role_id rid,name roleName,remark roleRemark form ss_role ")
    @ResultType(Role.class)
    List<Role> findByPage();

    /**
     * 查询总条目
     * @return int
     */
    @Select("select count(*) from ss_role")
    int findTotal();

    /**
     * 添加角色信息
     * @param role role
     * @return int
     */
    @Insert("insert into ss_role(role_id,name,remark) values(#{rid},#{roleName},#{roleRemark})")
    int addRole(Role role);

    /**
     * 根据id查询角色
     * @param rid 角色id
     * @return role
     */
    @Select("select role_id rid,name roleName,remark roleRemark from ss_role where role_id=#{rid}")
    @ResultType(Role.class)
    Role findById(String rid);

    /**
     * 修改角色信息
     * @param role role
     * @return int
     */
    @Update("<script> update ss_role " +
            "<set>" +
            "   <if test='roleName != null'> name=#{roleName}  </if>" +
            "   <if test='roleRemark != null'> remark=#{roleRemark} </if>" +
            "</set>" +
            " where role_id=#{rid}" +
            "</script> ")
    int update(Role role);

    /**
     * 删除角色信息
     * @param rid 角色id
     * @return int
     */
    @Delete("delete from ss_role where role_id={rid} ")
    int delete(String rid);

    /**
     * 角色授权
     * @param rid 角色id
     * @param modelId 模块id
     * @return int
     */
    @Insert("insert into ss_role_module values(#{rid},#{modelId}) ")
    int addRolePower(String rid, String modelId);

    /**
     * 删除角色权限
     * @param rid 角色id
     * @param modelId 模块id
     * @return int
     */
    @Delete("delete from ss_role_module where role_id=#{rid} and module_id=#{modelId}")
    int deleteRolePower(String rid ,String modelId);

}
